<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


</body>

<script>



    class Cat {
        // class中声明的变量会直接存储到实例化对象中
        x = 123
        y = null
        // constructor 构造器 => 用于定义构造函数
        constructor(name, color) {
            this.name = name
            this.color = color
        }
        //  如果要在class中定义静态属性和方法 => 需要借助关键词 static
        static a = 1;
        static b = 2;
        static isCat(arg) {
            if (arg.constructor === this) {
                return true
            }
            return false
        }

        // class中定义的方法默认存储在构造函数的原型对象(prototype)上
        call() {
            console.log('喵喵叫~')
        }
        want() {
            console.log(this.name + '先抓老鼠~')
        }
    }


    // 如果需要将属性定义到构造函数的原型对象上 => 可以等类创建完毕之后 手动赋值
    Cat.prototype.species = "Cat"


    console.dir(Cat) // 类(构造函数)

    var Tom = new Cat("Tom", "black")
    console.log(Tom)
</script>

</html>